Version 2.55/2.6 is being released to current FSP users. Please exercise it and report any problems or suggestions. I will try to get a complete package, with better examples and complete docs, soon. I'd certainly
appreciate any FSP Control files as examples.
2.3 -> 2.4 Notes:
FSP 2.5/2 works only with RRHost 2.0 file sections.
Empty lines within a description are discarded. If they are desired for
formatting, include at least one character in the line.
Successive 'DESC's within a FORMAT statement refer to successive lines of
description, e,g "DESC+CR+DESC+CR+DESC+CR" will put out lines 1-3 of the
description. If any of the three lines is empty, then a blank line is
output (since the CR is unconditional).
CRDESC within a FORMAT statement indicates that a CR is output only if the
next line of description is non-empty.
DESCA within a FORMAT means all description lines that contain text, each
separated by a CR.
Both /DATE & /ULDATE sorts now sort by exact time of UL rather than just
the date. The drawback is that it is no longer possible to SORT/TITLE,
then SORT/DATE to get an Alphabetic listing within a single day.
SAVETEXT/DESC will output all lines of description.
*******************
*** FSP 2.5/2 ***
*******************
********************
*** New Symbols ***
All_Files_Sect
New_Files_Sect
Default_Level : 0 if not specified
Desc_Prompt : 'Added by FSP: ' if not specified.
These symbols are used in the ADD/FOLDER command. See the command description for details.
No_Files
This symbol is set to YES if there are no file entries in memory. It is set to NO if there are files in the current list. It can be used to skip unnecessary FSP commands.
*************************
*** New Format Items ***
(Used in FORMAT command.)
NAME
NAME is the actual name of the file. It is equivalent to PATH with the folder names stripped from the front.
COL[:nn]
COL will cause the next output field to be placed at the specified column. If the column number is not specified, it will default to 0. For example, "DATE+COL:30+TITLE" will put the file title in column 30. If the last output field already passed the specified column, then a carriage return is output and the next output will be placed on the next line at the specified column. This can be used with multiple DESC fields as a conditional carriage return. For example, '...DESC+COL+DESC+COL+DESC' will put out the first line of description, then a carriage return if there was anythin text output, then the next line, a carriage return if the line was not empty, and so forth.
This approach allows complete format control (which 2.4 didn't provide) so DESCR has been dropped as a format option.
The order of defaults was set so the a 'C' is equivalent to a COL rather than a CR (Carriage Return).
********************
*** New Commands ***
MOVE "<path>" "<Guard>"
MOVE/UNDER "<path>" "<Guard>"
MOVE/DELETE "<path>" "<Guard>"
MOVE will move any referenced files in the current section into the specified path, if it is not already in that folder. However, there are several constraints:
The Path must reference a valid folder. FSP will not create folders.
Only file entries with correct paths will be moved.
Only non-deleted entries will be moved, unless the /DELETE option is specfied, in which case, only files marked for deletion are moved.
Files must be on the same volume. MOVE will not copy or move a file from one volume to another.
The 'BBS' symbol must be defined if you use a partial path.
Any moved files will be logged in 'FSP Log'.
If the /UNDER option is used and a file is in a subfolder of the specfied folder, it will NOT be moved. For example, if a file entry has a path of ':Files:Sect3:A-K:A_File' and a MOVE/UNDER ':Files:Sect3' is executed, the file will not be moved. If, however, the path for a file is ':Files:Sect4:A-K:Another_File', then the file will be moved into Sect3 and the path changed to ':Files:Sect3:Another_File'.
CHECKPATH "<Volume or Folder Path>" "<Guard>"
CHECKPATH/DELETE "<Volume or Folder Path>" "<Guard>"
This command verifies the path for each non-deleted entry in the current list. If the path is incorrect, FSP will scan the specified volume/folder and all descendants of the volume/folder looking for the file. If it is found, the path is corrected. If it is not found and the /DELETE option is set, then the file will be marked for deletion. If no option is used and the file is not found, nothing happens.
If a null volume is used (CHECKPATH "" "<guard>"), FSP will scan the default volume from the top.
This command has several advantages over the old CHECK/PATH, which is replaces. For one thing, FSP can scan a subset of the disk faster than the entire disk. Also, it can be used with more than one volume. If the BBS file system is across two volumes, a CHECKPATH "<1st Vol.>" can be used to scan the first volume, then a CHECKPATH/DELETE "<2nd Vol.>" is used to scan the second, and delete any files that aren't found on either disk.
CHECKTYPE
Equivalent to CHECK/TYPE.
ADD/FOLDER "<Folder path>" "<Guard>"
This command will scan each file in the specified folder and compare it to the paths referenced by the file entry list (in memory). If any files exist in the folder that do not exist in the list of files, FSP will check "All_Files_Sect" and "New_Files_Sect". If the entry is found there, it is copied into the current list. If not, a new entry is created, using Default_Level as the privilege level and setting the description to Desc_Prompt followed by the full name of the file. The 12-character Title is set to the file name truncated to 12 characters, with trailing blanks removed, and any Option characters replaced with '+'. It IS possible to have duplicate names, so the Sysop must edit these created entries.
LIST "n"
N is a single digit decimal number. If N is >2, then both the screen and the log file will show statements within macros as they are executed. This is useful for debugging.
If N is > 5, then memory usage will be reported to the screen after each FSP command is executed.
This command will probably be extended in the future.
SORT/DLCNT
This SORTs by the number of times a file has been downloaded.
SORT/DLDATE
This will sort the files in order of the last date the file was downloaded.
SORT/DATE sorts by date of Upload, as it did before.
************************
*** Changed Commands ***
SAVETEXT[/LONG], READTEXT
SAVETEXT with no option or the LONG option now saves in the following format:
DELE flag : '-' if marked for deleted, ' ', if not.
An extra return. (A blank line will separate entries.)
READTEXT will read this file in and convert it to file section format, including any changes made with a text editor, thus providing a way of modifying any file section fields without resorting to Fedit and digging through lots of hex numbers, albeit in a somewhat kludgy way.
There is some error checking which will cause FSP to abort if an incorrectly formatted file is read, but there users should make every effort to get it right and avoid exercising the error handling capabilities.
LOAD, READTEXT
These commands are now 'protected' by guards. To review:
LOAD ":Sect1:.DL1" "ReadTxt-"
is logically equivalent to
IF "ReadTxt-" = "YES" or TRUE or NO- or FALSE-
then
LOAD ":Sect1:.DL1"
FORMAT "<format list>"
If the first character of the format list is '+', the format
is appended to the previous format rather than defining a
new one.
*************************
*** Deleted Commands ***
SAVE/MONTH
I didn't use it any more. It can be simulated with creative use of
DELETE/AGE and DELETE/NONE.
DELETE/TEXT
I didn't use it, and FSP was running short on segment space.
SAVETEXT/BRIEF
This text format is not really needed since FSP allows custom formats.
CHECK/PATH
Superceded by CHECKPATH
CHECK/PATH "<guard>" is equivalent to CHECKPATH/DELETE "" "<Guard>"
CHECK/TYPE
Superceded by CHECKTYPE.
*** Other changes ***
Holding the Mouse down as FSP completes an instruction will cause FSP to
terminate.
A SHOWSYMBOL with 'ALL' as the second argument will dump the entire
symbol table to the screen and the log file.
There are numerous other subtle changes, but I don't remember all of them.
*** FSP 2.5/2 --> FSP 2.51 ***
Since RRHost 2.0 has been released, I've dropped the '/2'. However, version 2.51 is more recent than 2.5/2. Version 2.5/2 has a serious problem that can cause loss of file sections under some circumstances, specifically the combined used of DEFINE "New_Files_Sect" and/or DEFINE "All_Files_Sect" and ADD/FOLDER; therefore replace FSP 2.5/2 immediately.
There are no other changes.
*******************
*** FSP 2.55 ***
*******************
************************
*** Fixed Commands ***
Both ADD/FOLDER and MOVE didn't work unless the BBS symbol was defined.
Both commands work with full pathnames now.
The MOVE/UNDER command didn't work in certain cases. It does now.
READTEXT wouldn't work with 10 line descriptions. Now it does. Also, any
number of blank lines may separate entries within a readtext-compatible file. The Version field was being truncated to 8 characters. This is fixed.
The SAVETEXT/FORMAT had a problem with field widths that was introduced with the COL field. This is fixed. (This particular logic is complicated
enough that bugs may still be present. If you find any, please let me know.)
The LAUNCH command has been tweaked for more consistent performance.
************************
*** Changed Commands ***
The DELETE/AGE command argument may be specified as "n", "<n", or ">n", where 'n' is a number, and with '>' as the default. That is, both DELETE/AGE "100" and DELETE/AGE ">100" will mark files over 100 days old as deleted. DELETE/AGE "<100" will mark files younger than 100 days.
************************
*** New Commands ***
CLEAR/DLCNT will zero the DL count field in the current list. This can be used in conjunction with the ADD/DLCNT to maintain correct DL counts across multiple file sections.
DELETE/CLRNC "n" or ">n" or "<n" will mark any files that have clearance (privilege) set to >n or <n. Default is >n.
DELETE/DLCNT "n" or ">n" or "<n" will mark any files that have DL counts < n, > n , or < n, respectively.
where a range is "low-high" or a "<number>", in which case a default will be used for the missing value. A 'K' may be used to multiply the stated value by 1024.
For example,
DELETE/FILTER "90" "500K" "9" "5"
will 'delete' all file entries greater than 90 days old, larger then 500K, with a DLCNT of <= 9, and a clearance (privilege) of 0-5.
DELETE/FILTER "90-365" "300K" "5" "5"
Note that if only one number is specified for 'age' and 'size', the specified number is assumed to be the lower range, while if a single number is specified for 'dlcnt' or 'clrnc', the number is the upper limit, with zero as the lower number.
(The 3650 is roughly 10 years. There are internal reasons for constraining this value although the exact number is arbitrary.)
The clearance/privilege field can be used to protect particular files from automatic deletion.
SIZE
This will show the number of available (not deleted) files, the number of deleted files, and the total size of each group. The size figures are based on the size attribute listed in the file entries, with each figure rounded up to the next 1K boundary.
Example:
43 available/ 489K ; 12 deleted / 330K
SENDSERIAL "<Port>" "<Modem Cmds>"
The port should be either 'A' (modem) or 'B' (printer). The <Modem Cmds> will be sent to the specified port and followed by a return.
SENDSERIAL "A" "ATH1" will take the modem off the hook.
DELETE/AGE and /CLRNC had problems with single digit ("0"-"9") parameters,
which has been fixed.
The SIZE command has spaces before the 'K', so that 0 sizes will show as
'0 K' rather than '0K'.
A new symbol, "root", is now defined which contains the root volume name. This adds some script portability if the BBS is running at the root level or in a known folder. For example,
DEFINE "BBS" "root:BBS" ;
* The first 'BBS' is the new symbol; the second is a folder name.
will set BBS to "HD40:BBS" if FSP is running on "HD40"
and will set BBS to "Jasmine:BBS" if FSP is running on "Jasmine".
The new symbol "Time" is set to the current time (H:MM). It is defined when FSP starts and is updated when a 'TIME' command is executed (along with 'Date').
The TIME command has been added, which updates 'Date' and 'Time' to current values.
TIME
SHOWSYMBOL "Time"
will show the current time in the FSP log file.
The new symbols 'TxtHdr1', 'TxtHdr2', and 'TxtHdr3' are initialized to ''. If they are defined by the user, the new value(s) will be inserted into any text files written by the SAVETEXT/FORMAT command. Up to three lines may be defined. If a TxtHdrN symbol is defined to be '' (i.e., empty), no lines will be output. Use one or more blanks to output blank lines at the beginning of the file. Also, symbols may be included within the symbol definition if they are preceded with a '\'. For example, the sequence
DEFINE "@1" "DAs"
DEFINE "TxtHdr1" "\@1 File written on \Date at \Time"
DEFINE "TxtHdr2" " "
DEFINE "TxtHdr3" "Hit cntrl-S to pause, cntrl-C to abort"
SAVETEXT/FORMAT ":Files:DAs Fldr:DAs.txt"
would insert:
DAs File written on 8/11 at 4:01
Hit cntrl-S to pause, cntrl-C to abort
at the beginning of the text file, :Files:DAs Fldr:DAs.txt,
assuming that Date and Time are '8/11' and '4:01', respectively.
Although this facility was provided to allow time/date stamps, any
defined symbol may be used. (The total length of the final symbol
should be under 80 chars.) Symbol substitution is done each time
SAVETEXT/FORMAT is performed, so modified symbols will be included
in the header.
SETCLRNC "[v1[-v2]]" "v3"
Any files with a clrnc (privilege level) within the range v1-v2 will be set to a clearance of v3.
Examples:
SETCLRNC "" "20" ; Set all files with a clrnc of 0 to 20.
SETCLRNC "0-19" "20" ; Set all files with a clrnc of 0-19 to 20.
SETCLRNC "100-200" "255" ; Set all files with a clrnc of 100-200 to 255.
RENAMEFILE "<pathname>" "<new name>"
will change the name of the specified file. If a file already exists
with the specfied name, the RENAME will fail and FSP will quit. A DELETEFILE may be used to delete existing files with the same name.
I used to back up file sections as follows:
LOAD "<Section>"
SAVE "<Section>.bak"
....
The sequence:
DELETEFILE "<Section>.bak"
RENAMEFILE "<Section>" "<Section>.bak"
LOAD "<Section>.bak"
...
will do the same thing (deleting any existing '<Section>.bak')
in less time, since the backup file is not rewritten (although the icons may move around).
A problem was reported a few weeks ago (last part of July, 89) in which the Add/Folder command was pciking up the wrong entries from the 'All_Files_Sect'. This symbol was being defined at the beginning of the run,m then modified. FSP maintains portions of this file in memory in order to speed execution of the ADD/FOLDER command; therefore, the All_Files_Sect must be redefined after any changes, thus keeping the internal 'cache' consistent with the disk file.
Also, new with 2.6, the DLcnt of all entries in the All_Files_Sect is kept in memory in order to speed up ADD/DLCNT "All_Files_Sect". For implementation reasons, this particular form of the ADD/DLCNT will match on the actual file name rather than the 12 character title. (Using the title would have increased memory requirements substantially.) A ADD/DLCNT using a 950+ entry All_Files_Sect took under 7 seconds with FSP 2.6 and over 53 with FSP 2.55.
*** Closing Notes 8/13/89 ***
I will be putting together a complete release package in the next 3-4 weeks. Although I don't consider this 'beta' in the strictest sense (I don't think there are any new bugs) I encourage users to experiment and let me know if there are any problems, of with new suggestions. Also, I'd be glad to include any example FSP scripts in the upcoming release.